home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / comm / tcp / Clarissa_HTTPd.lha / Clarissa-HTTPd / HTML / cgi-bin / aminetcdfind.cgi next >
Encoding:
Text File  |  2000-10-24  |  3.4 KB  |  114 lines

  1. /* #! sys:rexxc/rx **/
  2. /* $VER: aminetcdfind.cgi 1.0 (23.10.00) */
  3. /* Script für Suche auf einer AminetCD für Clarissa-HTTPd*/
  4. /* © Martin Kayser */
  5.  
  6. /* Das Script sollte sowohl mit CD's aus den Set's als auch den einzelnen CD's
  7. ** funktionieren. (Ich habe jedoch keine CD aus den Set's!!!) */
  8.  
  9. /* Dieses Script benötigt das Programm flashfind (V. 1.2) aus dem Aminet
  10. ** (util/cli/FlashFind1.2.lha) */
  11.  
  12. /* Konfiguration */
  13.  
  14. file='cd0:aminet/info/index/local'
  15. maxanzahl=100
  16. amineturl='/~aminet'
  17. flashfind='c:flashfind'
  18.  
  19. /******************** Hauptprogramm ********************/
  20. say 'Content-type: text/html'
  21. say ''
  22.  
  23. parse arg args
  24.  
  25. args = translate(args,' ','+')
  26. args = translate(args,d2c(10),'&')
  27. args = hex2str(args)
  28.  
  29. call cdname
  30.  
  31. say '<HTML>'
  32. say '<HEAD>'
  33. say '<TITLE>Aminet searches</TITLE>'
  34. say '</HEAD>'
  35. say '<BODY>'
  36. if index(upper(cdname),'AMINET')~=0|index(upper(cdname),'SET')~=0 then do
  37.   say '<H1>Aminetsuche auf der CDRom 'cdname'.</H1>'
  38.   say 'Es ist leider nur die Angabe eines einzelnen Suchbegriffes möglich.<BR>'
  39.   say 'Der Index wird nach den ersten 'maxanzahl' passenden Einträgen durchsucht.<BR>'
  40.   say '<ISINDEX prompt="Geben Sie bitte einen Suchbegriff ein: ">'
  41.   args = subword(args,1,1)
  42.   if index(args,':')~=0 then parse var args args':'rest
  43.   if index(args,'/')~=0 then parse var args args'/'rest
  44.   if args ~='' then call scanner
  45. end
  46. else do
  47.   say '<H1>Dienst momentan nicht verfügbar</H1>'
  48.   say '<B>Grund:</B> Entweder liegt momentan keine Aminet-CD im CD-Laufwerk oder'
  49.   say 'das CGI-Script auf dem Server wurde nicht richtig konfiguriert.'
  50. end
  51. say '</BODY>'
  52. say '</HTML>'
  53. exit
  54. /**** Prozeduren ****/
  55.  
  56. scanner:
  57. if exists(file) & exists(flashfind) then do
  58.   address command flashfind||' '||file||' '||args||' NH maxhit='||maxanzahl||' >T:find.'||args
  59.   if open(1,'T:find.'args) then do
  60.     say 'Für den Suchbegriff <B>´'args'´</B> wurden folgende'
  61.     say 'Einträge gefunden.'
  62.     say '<HR>'
  63.     say '<table border=1>'
  64.     say '<TR><TD><B>Name</B></TD><TD align=right><B>Verzeichnis</B></TD>'
  65.     say '<TD align=right><B>Größe</B></TD><TD align=right><B>Alter</B></TD>'
  66.     say '<TD><B>Beschreibung</B></TD></TR>'
  67.     do while ~eof(1)
  68.       s=readln(1)
  69.       if s~='' & left(s,1)~='|' then do
  70.         parse var s archiv verzeichnis groesse rest
  71.         alter=substr(s,36,3)
  72.         short=substr(s,40)
  73.         say '<TR>'
  74.         say '<TD><a href="'amineturl'/'verzeichnis'/'archiv'">'
  75.         say archiv'</a></TD>'
  76.         say '<TD align=right><a href="'amineturl'/'verzeichnis'/">'verzeichnis'</TD></a>'
  77.         say '<TD align=right>'groesse'</TD>'
  78.         say '<TD align=right>'alter'</TD>'
  79.         say '<TD><a href="'amineturl'/'verzeichnis'/'left(archiv,length(archiv)-4)'.readme">'
  80.         say short'</a></TD>'
  81.         say '</TR>'
  82.       end
  83.     end
  84.     call close(1)
  85.     address command 'run >nil: delete T:find.'args
  86.     say '</table>'
  87.   end
  88. end
  89. return
  90.  
  91. cdname:
  92. parse var file cddev':'rest
  93. if exists(cddev||':') then do
  94.   address command 'c:info 'cddev': >t:cddev.temp'
  95.   if open(cd,'T:cddev.temp') then do
  96.     do while ~eof(cd)
  97.       c=readln(cd)
  98.       if index(c,'[Mounted]')~=0 then parse var c cdname' [Mounted]'
  99.     end
  100.   end
  101.   call close(cd)
  102.   address command 'run >nil: delete T:cddev.temp'
  103. end
  104.  
  105. hex2str: procedure
  106.   parse arg a
  107.   b = '%'
  108.   d = index(a,b)
  109.   do while d ~= 0
  110.     a = insert(x2c(substr(a,d+1,2)),delstr(a,d,3),d-1)
  111.     d = index(a,b)
  112.   end
  113. return a
  114.